#ifndef DATE_UTILS_H
#define DATE_UTILS_H

#include <math.h>
#include <wchar.h>  // 宽字符支持

// 日期结构体
typedef struct {
    int Y;  // 年
    int M;  // 月
    int D;  // 日
    int h;  // 时
    int m;  // 分
    double s;  // 秒
} Date;

// 日期计算函数
double JD(int y, int m, double d);  // 公历转儒略日
Date DD(double jd);                 // 儒略日数转公历
wchar_t* DD2str(Date r);            // 日期转为字符串
wchar_t* JD2str(double jd);         // JD 转为字符串
double toJD(Date *date);            // 公历转儒略日
void setFromJD(Date *date, double jd); // 儒略日数转公历
wchar_t* timeStr(double jd);        // 提取 jd 中的时间（去除日期）

// 星期相关
int getWeek(double jd);             // 星期计算
double nnweek(int y, int m, int n, int w); // 求 y 年 m 月的第 n 个星期 w 的儒略日数

#endif // DATE_UTILS_H